#define _CRT_SECURE_NO_WARNINGS 1

#include<deque>
//namespace Xm
//{
//	template<class T, class Container = std::deque<T> >
//	class queue
//	{
//	public:
//		void push(const T& val)
//		{
//			_con.push_back(val);
//		}
//
//		void pop()
//		{
//			_con.pop_front();
//		}
//
//		T& front()
//		{
//			return _con.front();
//		}
//
//		const T& front() const
//		{
//			return _con.front();
//		}
//
//		size_t size()const
//		{
//			return _con.size();
//		}
//
//		T& back()
//		{
//			return _con.back();
//		}
//
//		T& back() const
//		{
//			return _con.back();
//		}
//
//		bool empty()const
//		{
//			return _con.empty();
//		}
//		
//	private:
//		Container _con;
//	};
//}



#include<list>
namespace Xm
{
	template <class T>
	class queue
	{
	public:
		queue()
		{}
		
		void push(const T& val)
		{
			_con.push_back(val);
		}

		void pop()
		{
			_con.pop_front();
		}

		T& front()
		{
			return _con.front();
		}

		const T& front() const
		{
			return _con.front();
		}

		T& back()
		{
			return _con.front();
		}

		const T& back() const
		{
			return _con.front();
		}

		size_t size()const
		{
			return _con.size;
		}

		bool empty()
		{
			return _con.empty();
		}
		
	private:
		std::list<T> _con;
	};
}